package main

import "fmt"

var _ = `   
	1. 切片：切片是数组的一个引用，因此切片是引用类型。但自身是结构体，值拷贝传递。
    2. 切片的长度可以改变，因此，切片是一个可变的数组。
    3. 切片遍历方式和数组一样，可以用len()求长度。表示可用元素数量，读写操作不能超过该限制。
    4. cap可以求出slice最大扩张容量，不能超出数组限制。0 <= len(slice) <= len(array)，其中array是slice引用的数组。
    5. 切片的定义：var 变量名 []类型，比如 var str []string  var arr []int。
    6. 如果 slice == nil，那么 len、cap 结果都等于 0。
	`

func main() {
	// 1.声明切片
	var s1 []int                  // nil切片
	s2 := []int{}                 // 空切片
	var s3 []int = make([]int, 3) // 长度为3的切片
	fmt.Println(s1, s2, s3)
	s1 = []int{1, 3, 2}
	s2 = append(s2, 4, 5, 6)
	s3[0], s3[1], s3[2] = 7, 8, 9
	//s3 = []int{1, 2, 3, 4, 5}  // 覆盖原有切片，长度必须为5
	fmt.Println(s1) // 输出: [1 2 3]
	fmt.Println(s2) // 输出: [4 5 6]
	fmt.Println(s3) // 输出: [7 8 9]

	s3 = append(s3, 11, 22)
	fmt.Println(s3)
}
